namespace Thinktecture.Tools.Web.Services.CodeGeneration
{
	/// <summary>
	/// 
	/// </summary>
	public class WebServicesCodeGenerationOptions
	{
		private string _wsdlLocation;
		private string _codeLanguage;
		private bool _generateProperties;
		private string _configurationFile;
		private bool _enableSoapMessagesAccess;
		private bool _enableEndpointConfiguration;
		private bool _generateClientSideCode;
		private bool _generateSerializableTypes;
        private bool _enableValidation;
		private bool _generateCollections;
		// BDS: Added this new flag to hold the preference for the multiple file genaration.
		private bool _generateMultipleFiles;
		// BDS: Added this new flag to hold the preference for Interface generation.
		private bool _generateInterface;
		// BDS: Added this new flag to hold the preference for the Help files generation.
		private bool _generateHelp;

		private string _wsdlContents;
		private string _webServiceImplementationFile;
		// BDS: Added these new variables to hold the names of the proxy and stub class files.
		private string _proxyName;
		private string _stubName;
        private bool _changeCasing;
        private bool _enableWsdl;
        private bool _orderIdentifiers;
        private bool _oldAsyncCode;
        private bool _noXxxSpecifiedHandling;
        private bool _databinding;
        private bool _useGenericList;
	    private bool _removeDefaultValueAttribute;

	    public bool ChangeCasing
        {
            get { return _changeCasing; }
            set { _changeCasing = value; }
        }

		public string WsdlLocation
		{
			get { return _wsdlLocation; }
			set { _wsdlLocation = value; }
		}

		public string CodeLanguage
		{
			get { return _codeLanguage; }
			set { _codeLanguage = value; }
		}

		public bool GenerateProperties
		{
			get { return _generateProperties; }
			set { _generateProperties = value; }
		}

		public string ConfigurationFile
		{
			get { return _configurationFile; }
			set { _configurationFile = value; }
		}

		public bool EnableSoapMessagesAccess
		{
			get { return _enableSoapMessagesAccess; }
			set { _enableSoapMessagesAccess = value; }
		}

		public bool EnableEndpointConfiguration
		{
			get { return _enableEndpointConfiguration; }
			set { _enableEndpointConfiguration = value; }
		}

		public bool GenerateClientSideCode
		{
			get { return _generateClientSideCode; }
			set { _generateClientSideCode = value; }
		}

		public bool GenerateSerializableTypes
		{
			get { return _generateSerializableTypes; }
			set { _generateSerializableTypes = value; }
		}

		public bool EnableValidation
		{
			get { return _enableValidation; }
			set { _enableValidation = value; }
		}

		public bool GenerateCollections
		{
			get { return _generateCollections; }
			set { _generateCollections = value; }
		}

		public bool GenerateMultipleFiles
		{
			get{ return _generateMultipleFiles;}
			set{ _generateMultipleFiles = value;}
		}
		
		public bool GenerateInterface
		{
			get{ return _generateInterface;}
			set{ _generateInterface = value;}
		}

		public bool GenerateHelp
		{
			get { return _generateHelp;}
			set { _generateHelp = value;}
		}

		public string WsdlContents
		{
			get { return _wsdlContents; }
			set { _wsdlContents = value; }
		}

		public string WebServiceImplementationFile
		{
			get { return _webServiceImplementationFile; }
			set { _webServiceImplementationFile = value; }
		}

		public string ProxyName
		{
			get{ return _proxyName; }
			set{ _proxyName = value; }
		}

		public string StubName
		{
			get{return _stubName;}
			set{_stubName = value;}
		}

        public bool EnableWsdl
        {
            get { return _enableWsdl; }
            set { _enableWsdl = value; }
        }

        public bool OrderIdentifiers
        {
            get { return _orderIdentifiers; }
            set { _orderIdentifiers = value; }
        }

        public bool OldAsyncCode
        {
            get { return _oldAsyncCode; }
            set { _oldAsyncCode = value; }
        }

        public bool NoXxxSpecifiedHandling
        {
            get { return _noXxxSpecifiedHandling; }
            set { _noXxxSpecifiedHandling = value; }
        }

        public bool Databinding
        {
            get { return _databinding; }
            set { _databinding = value; }
        }

        public bool UseGenericList
        {
            get { return _useGenericList; }
            set { _useGenericList = value; }
        }


	    public bool RemoveDefaultValueAttribute
	    {
            get { return _removeDefaultValueAttribute; }
            set { _removeDefaultValueAttribute = value; }
	    }
	}
}
